// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
  setTimeout(() => {
    document.body.classList.add('sidenav-pinned')
    document.body.classList.add('ready')
  }, 200)
})

// 每个页面都会导入该js 统一的设置写这里即可
// 创建了toast轻提示 元素
const myToast = new bootstrap.Toast(document.querySelector('#myToast'), {
  delay: 2000,
})
function tip(msg) {
  // 将传入的msg设置为弹框的内容
  document.querySelector('#myToast .toast-body').innerHTML = msg
  // 调用 显示
  myToast.show()
}

// 设置基地址
axios.defaults.baseURL = 'http://ajax-api.itheima.net'
// 获取本地存储的username
const username = localStorage.getItem('username')
// 获取更改用户名
const titleName = document.querySelector('#navbar-main .font-weight-bold')
// 判断是否存在这个元素对象，有就修改
titleName && (titleName.innerHTML = username)

// 退出登录
const logout = document.querySelector('#logout')
logout &&
  (logout.onclick = () => {
    delToken()
    localStorage.removeItem('username')
    location.assign('../login.html')
  })

// 请求拦截器
// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // console.log(config)
    config.headers.Authorization = getToken()
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)
// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // console.log(response.data);
    return response.data
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // console.dir(error);
    tip(error.response.data.message)
    return Promise.reject(error)
  }
)

// 封装token
const key = 'token'
// 存储到本地
function setToken(newToken) {
  localStorage.setItem(key, newToken)
}

function getToken() {
  return localStorage.getItem(key)
}

function delToken() {
  localStorage.removeItem(key)
}
